using Jupiter.Infrastructure.Permission.Attributes;
using Wips.AppService.Authorities.Users.ViewModels;
using Wips.Domain.Models.Authorities.Model;

namespace Wips.AppService.Authorities.Users.Responses
{
    /// <summary>
    /// 读取用户分页数据响应类
    /// </summary>
    [DataPermission("用户管理模块",
        typeof(GetUserPagesResponse),
        typeof(User))]
    public class GetUserPagesResponse : UserViewModel
    {
        /// <summary>
        /// 创建人
        /// </summary>
        public string? CreatorId { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime Created { get; set; }

        /// <summary>
        /// 最后更新时间
        /// </summary>
        public DateTime? Updated { get; set; }


        /// <summary>
        /// 角色
        /// </summary>
        public List<string> RoleNames { get; set; } = new();

        /// <summary>
        /// 职位
        /// </summary>
        public List<string> PositionNames { get; set; } = new();

        /// <summary>
        /// 组织架构
        /// </summary>
        public List<string> OrganizationNames { get; set; } = new();


        /// <summary>
        /// 策略
        /// </summary>
        public List<string> StrategyGroupId { get; set; }
            = new();

        // TODO 测试数据权限的字段，需要移除
        /// <summary>
        /// 组织架构ID
        /// </summary>
        public string OrganizationId { get; set; }


        // TODO 测试数据权限的字段，需要移除
        /// <summary>
        /// 职位ID
        /// </summary>
        public string JobId { get; set; }

        // TODO 测试数据权限的字段，需要移除
        /// <summary>
        /// 项目ID
        /// </summary>
        public string ProjectId { get; set; }

        // TODO 测试数据权限的字段，需要移除
        /// <summary>
        /// 所属人
        /// </summary>
        public string OwnerId { get; set; }


        // TODO 测试数据权限的字段，需要移除
        /// <summary>
        /// 是否管理员
        /// </summary>
        public bool TrueOrFalse { get; set; }

        // TODO 测试数据权限的字段，需要移除
        /// <summary>
        /// 订单金额
        /// </summary>
        public int Number { get; set; }
    }
}